package com.example.demo.util;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.Claim;
import com.example.demo.pojo.User;

import java.util.Date;
import java.util.Map;

public class JwtUtil {

    private static final String KEY = "guoJing";  // JWT 密钥

    // 生成 JWT Token
    public static String genToken(User user) {
        return JWT.create()
                .withClaim("username", user.getUsername())  // 在 Token 中存储用户名
                .withClaim("role", user.getType())          // 存储用户类型
                .withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 12))  // 设置过期时间
                .sign(Algorithm.HMAC256(KEY));  // 使用 HMAC256 算法签名
    }

    // 解析 Token，提取其中的 Claims
    public static Map<String, Claim> parseToken(String token) {
        return JWT.require(Algorithm.HMAC256(KEY))
                .build()
                .verify(token)
                .getClaims();  // 返回所有 Claims 信息
    }
}
